﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProjetoDLL.Model;
using ProjetoDLL.DAO;

namespace ProjetoDLL.BLL
{
    public  class OperacoesPedido
    {
        public static bool efetuarPedido(Usuario u, CarrinhoDeCompras carrinho, double valorTotal)
        {
            Pedido p = new Pedido();
            p.UsuarioPedido = u;
            p.DataPedido = DateTime.Now;
            p.ValorTotal = (float)valorTotal;
            PedidoDAO dao = new PedidoDAO();
            dao.Inserir(p);
            p = dao.SincronizarObjeto(p);

            
            List<ItemCarrinho> produtos = carrinho.produtos;
            //Checagem para ver se não excede o estoque.
            foreach (ItemCarrinho i in produtos) {

                if (i.quantidade > i.produto.QuantidadeEstoque)
                {
                    return false;
                } 
            }

            foreach (ItemCarrinho i in produtos)
            {
                i.produto.QuantidadeEstoque -= i.quantidade;
                new ProdutoDAO().Atualizar(i.produto);
                ProdutosPedido produtoPedido = new ProdutosPedido();
                produtoPedido.Pedido = p;

                produtoPedido.Produto = i.produto;
                produtoPedido.QtdProdutos = i.quantidade;
                new ProdutosPedidoDAO().Inserir(produtoPedido);


            }

            //Efetuar registros nas tabelas TB_PEDIDO e TB_PRODUTOS_PEDIDO

            return true;
            
        }
    }
}
